﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Diagnostics;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ABB_last_end.module;
using System.Threading;

namespace ABB_last_end
{
    public partial class opr : Form
    {

        public opr()
        {
            InitializeComponent();

        }

        private void Form2_Load(object sender, EventArgs e)
        {
            this.Text = ("权限：操作员");

        }

        // 删除窗口  释放线程资源
        private void opr_FormClosing(object sender, FormClosingEventArgs e)
        {
            this.Hide();
            this.Close();
        }


        //实例化连接类  静态对象    全局访问权限 
        static ABB_connect aBB_Connect = new ABB_connect();


        /// <summary>
        ///  机器人触发事件 操作   ui交互   权限：操作员
        /// </summary>  
        #region
        // 点击 ui tog 连接控制器 
        private void lsV_opr_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            aBB_Connect.connect_click_connect();
            timer1.Enabled = true;
            timer2.Enabled = true;
            timer3.Enabled = true;
            timer4.Enabled = true;
            //订阅事件 开始更新
            aBB_Connect.flow_get();


        }


        //启动  只有选择好模式和确定机器人当前位置是否符合后才启动 
        private void But_start_Click(object sender, EventArgs e)
        {

            if (chB_auto.Checked)
            {
                aBB_Connect.connect_start();
            }
            else if (chb_hand.Checked)
            {
                MessageBox.Show("请在示教器上获取手动权限，手动模式下，上位机无效！");
            }
            else
            {
                MessageBox.Show("请选择一种模式启动！");
            }
        }

        //停止
        private void But_stop_Click(object sender, EventArgs e)
        {

            aBB_Connect.connect_stop();
        }

        //上电
        private void But_power_on_Click(object sender, EventArgs e)
        {
            aBB_Connect.connect_power_on();
        }

        //下电
        private void But_power_off_Click(object sender, EventArgs e)
        {
            aBB_Connect.connect_power_down();
        }

        //复位
        private void But_reset_Click(object sender, EventArgs e)
        {
            aBB_Connect.connect_reset_program();
        }


        //日志更新
        private void But_log_new_Click(object sender, EventArgs e)
        {
            aBB_Connect.connect_log();
        }

        // 日志筛选
        private void But_screening_Click(object sender, EventArgs e)
        {
            if (Che_1.Checked || Che_2.Checked || Che_3.Checked || Che_4.Checked)
            {
                if (Che_1.Checked)
                {
                    aBB_Connect.log_screening_1();
                }

                if (Che_2.Checked)
                {
                    aBB_Connect.log_screening_2();
                }

                if (Che_3.Checked)
                {
                    aBB_Connect.log_screening_3();
                }

                if (Che_4.Checked)
                {
                    aBB_Connect.log_screening_4();
                }
                // 记录  复位 
                Che_1.Checked = false;
                Che_2.Checked = false;
                Che_3.Checked = false;
                Che_4.Checked = false;

            }
            else
            {
                MessageBox.Show("请勾选需要筛选的事件种类哦，可以多选。");
            }
        }

        //日志清空 
        private void But_log_null_Click(object sender, EventArgs e)
        {
            aBB_Connect.connect_log_Clean();
            Che_1.Checked = false;
            Che_2.Checked = false;
            Che_3.Checked = false;
            Che_4.Checked = false;
        }

        //定时器 激活事件 显示当前速度  和显示  关节坐标  大地坐标 
        private void timer1_Tick(object sender, EventArgs e)
        {
            //定时器 激活事件
            if (timer1.Enabled == true)
            {
                aBB_Connect.timer_speed();
            }
            //  显示大地坐标系 和关节坐标系
            aBB_Connect.GetRobotAngel();
            aBB_Connect.GetRobotworldPosition();

            // 实时获取机器人工具坐标
            aBB_Connect.Get_target_auto_position();

           
        }

        // 显示滚动框的值
        private void Hsb_speed_Scroll(object sender, ScrollEventArgs e)
        {
            Lab_3.Text = "设定速率：" + Hsb_speed.Value.ToString() + "%";
        }

        //设定按钮   设定速度 
        private void But_speed_set_Click(object sender, EventArgs e)
        {
            aBB_Connect.connect_Speed();
        }

        //显示 系统当前时间 和系统已运行时间  提醒保养 
        private void timer2_Tick(object sender, EventArgs e)
        {

            Lab_sy_time_2.Text=Lab_time_run.Text = "系统运行时间:" + aBB_Connect.Time_to_run_3() + "时" + aBB_Connect.Time_to_run_2() + "分"
                + aBB_Connect.Time_to_run() + "秒";
            //实时显示当前系统的时间 
            Lab_now_time.Text = "系统当前时间：" + DateTime.Now.ToString();

            if (aBB_Connect.Time_to_run()==30)
            {
                MessageBox.Show("机器已经连续运行：" + aBB_Connect.Time_to_run() + "天，注意保养");
            }    

        }



        // 获取当前当前目标点信息
        private void But_position_set_Click(object sender, EventArgs e)
        {
            aBB_Connect.Get_targt_position();
        }

        //设置当前目标点信息 
        private void But_position_put_Click(object sender, EventArgs e)
        {
            aBB_Connect.Put_target_position();
        }

        //备份文件事件
        private void But_save_Click(object sender, EventArgs e)
        {
            aBB_Connect.Put_save__file();
        }

        //机器人 左吸盘  拾取
        private void But_left_get_Click(object sender, EventArgs e)
        {
            aBB_Connect.Set_left_pick();
        }

        //机器人 左吸盘  放置
        private void But_left_put_Click(object sender, EventArgs e)
        {
            aBB_Connect.Reset_left_pick();
        }

        //机器人 右吸盘  拾取
        private void But_rigth_get_Click(object sender, EventArgs e)
        {
            aBB_Connect.Set_rigth_pick();
        }

        //机器人 右吸盘  放置
        private void But_right_put_Click(object sender, EventArgs e)
        {
            aBB_Connect.Reset_rigth_pick();
        }


        // 模式选择   自动  互锁 
        private void chB_auto_CheckedChanged(object sender, EventArgs e)
        {
            if (chb_hand.Checked)
            {
                chb_hand.Checked = false;
            }
        }
        // 模式选择   手动  互锁 
        private void chb_hand_CheckedChanged(object sender, EventArgs e)
        {
            if (chB_auto.Checked)
            {
                chB_auto.Checked = false;
            }
        }


        //记录 预防维护的项目 
        private void But_write_m_Click(object sender, EventArgs e)
        {
            aBB_Connect.Set_write_Maintenance();
        }

        // 保存 预防维护的项目 
        private void But_write_file_Click(object sender, EventArgs e)
        {
            aBB_Connect.Set_write_file();
        }

        //打开  以前保存的预防维护文件
        private void But_open_file_Click(object sender, EventArgs e)
        {
            aBB_Connect.Get_open_file();
        }


        // 切换为管理员 
        private void But_adm_Click(object sender, EventArgs e)
        {
            this.Hide();
            aBB_Connect.sign_init();
        }
        #endregion


        // 需要快速响应的事件  
        private void timer3_Tick(object sender, EventArgs e)
        {
            //实时检测工件是否到位 
            aBB_Connect.Get_work_tool_signal();
            //检测夹具是否夹紧
            aBB_Connect.Get_Jig_signal();
            //检测工作站是否运行
            aBB_Connect.Detection_working();
            //检测机器人运行模式
            aBB_Connect.Detection_models();
            //检测电机是否上电 
            aBB_Connect.Detection_motor();
            // 检测机器人是否拾取工件
            aBB_Connect.Get_Pressure_Singal();
            //检测机器人是否放置工件
            aBB_Connect.Put_Pressure_Singal();
            //检测机器人左吸盘状态
            aBB_Connect.Detection_left_pick();
            //检测机器人右吸盘状态
            aBB_Connect.Detection_rigth_pick();

        }

        // 定时器  4
        private void timer4_Tick(object sender, EventArgs e)
        {
            //检测生产数量 
            aBB_Connect.Count_Production();

            // 检测生产率
            aBB_Connect.Count_Productivity();
            
            //不合格个数
            aBB_Connect.Count_low();

            //检测生产良率
            aBB_Connect.Count_good_Productivity();
        }
       
    }
    }


